package com.lagou.xml04;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import java.util.List;

public class TestXPath {

    /*
    * 使用selectSingleNode() 方法 查询指定的节点信息
    * */
    @Test
    public void test1() throws DocumentException {

        //1.创建XML解析对象
        SAXReader saxReader=new SAXReader();

        //2.解析XML 获取文档对象
        Document document = saxReader.read("E:\\Java\\java train\\jdbc_work\\xml_task03\\src\\com\\lagou\\xml04\\book.xml");

        //3.通过selectSingleNode() 方法 获取name节点
        Node node1 = document.selectSingleNode("/bookstore/book/name");
        System.out.println("节点的名称:"+node1.getName());
        System.out.println("节点的文本内容为:"+node1.getText());


        //4.获取第二本书的书名
        Node node2=document.selectSingleNode("/bookstore/book[2]/name");
        System.out.println("节点的文本内容为:"+node2.getText());
    }


    /*
    * 使用selectSingleNode() 方法 获取属性值 或者 通过属性值获取节点信息
    * */
    @Test
    public void test2() throws DocumentException {

        //1.获取XML解析对象
        SAXReader saxReader=new SAXReader();

        //2.获取文档对象
        Document document=saxReader.read("E:\\Java\\java train\\jdbc_work\\xml_task03\\src\\com\\lagou\\xml04\\book.xml");

        //3.获取第一个book节点中的 id属性的值
        Node node1=document.selectSingleNode("/bookstore/book/attribute::id");
        System.out.println("第一个book节点中的id属性的值为:"+node1.getText());

        //4.获取最后一个book节点的 id属性的值
        Node node2=document.selectSingleNode("/bookstore/book[last()]/attribute::id");
        System.out.println("最后一个book节点的id属性的值为:"+node2.getText());




        //5.通过id的值 获取book2节点中的书名
        Node node3=document.selectSingleNode("bookstore/book[@id='book2']");

        String str1=node3.selectSingleNode("name").getText();
        System.out.println("通过id的值获取book2节点中的书名为:"+str1);
    }



    /*
    * 使用selectNodes() 方法 获取所有指定名称的节点
    *
    * */
    @Test
    public void test3() throws DocumentException {

        //1.解析XML
        SAXReader saxReader = new SAXReader();

        //2.获取文档对象
        Document document = saxReader.read("E:\\Java\\java train\\jdbc_work\\xml_task03\\src\\com\\lagou\\xml04\\book.xml");

        //3.查询所有的节点
        List<Node> list = document.selectNodes("//*");
        for (Node node : list) {
            System.out.println("节点名:" + node.getName());
        }
        System.out.println("__________________________________________________");

        //4.获取所有的书名
        List<Node> list1 = document.selectNodes("//name");
        for (Node node:list1){
            System.out.println("书名:"+node.getText());
        }
        System.out.println("__________________________________________________");

        //5.获取id值为book1 的节点中的所有内容
        List<Node> list2 = document.selectNodes("/bookstore/book[@id='book1']//*");
        for(Node node:list2){
            System.out.println(node.getName()+"="+node.getText());
        }
    }
}
